通用序列匯流排(USB)是很常見的串列協定。其具有熱插拔的特性,當USB裝置插入主機時,主機會自動偵測到,並且軟體會對其作規畫,且可隨插即用。USB的連接線供應裝置電源,可提供+5伏特直流電(DC)的電壓,電流供應約100~500毫安培。
USB的連接線共有四條,其中兩條是電源與地線,另兩條是訊號線,分別是D+與D-。一般情況下,兩條線的訊號相反,若其中一條的訊號為High,則另一條的訊號就為Low,此差動訊號能提升訊號抗雜訊抗干擾的能力,USB就是利用D+、D-兩條訊號線的差動訊號,達成高速傳輸的目的。
USB主機端在沒有裝置連接時,D+、D-上會有一個1.5kΩ的電阻接地,確保這兩條線是在接地狀態。可支援至一百二十七個位址,也就是說,一個USB系統最多支援一百二十七個裝置,主機會週期性的探詢每個集線器以便得知裝置的連接狀態。以USB1.1而言,其分為高速與低速兩個模式,低速傳輸率為1.5Mbit/s;高速為12Mbit/s,在高速模式時每個位元的寬度約83.3奈秒。
封包是組成USB傳輸的最小單位。在USB傳輸時負責替電腦主機(Host)端與集線器上的每一個USB裝置傳輸溝通,而邏輯分析儀可透過訊號抓取,協助工程師將訊號直接轉譯解碼並顯示於軟體中,讓使用者可以直接分析USB訊號。
使用邏輯分析儀 連接待測的USB裝置
本文範例中,待測物(DUT)為USB藍牙連接裝置(Bluetooth Dongle),即USB1.1,業界廠商推出的邏輯分析儀,可針對USB1.1模組製作相對應的測量治具(圖1),能幫助使用者省去繁雜的接線步驟,直接將待測物連接完成。將治具中的A Type連接埠接上待測物,B Type連接埠透過隨附USB線接上PC USB Host,並將邏輯分析儀的A0及A1通道藉由測試線連接至USB治具上的D-、D+,連接完成圖如圖2所示。
![]() |
| 圖1 USB測量治具 |
![]() |
| 圖2 待測物與邏輯分析儀連接圖 |
邏輯分析儀擁有多通道特性,只要剩餘通道足夠,即可在同時間內測量多組串列訊號,圖3為同時測量USB1.1訊號及I2C訊號的畫面。邏輯分析儀中內建的串列協定模組設定方便又快速,如圖4所示,使用者只須設定D+、D-的腳位及訊號速度,點下OK後就可以將USB訊號解碼。為更加方便分析以及提高效率,邏輯分析儀更在新版軟體中加入串列協定封包列表功能,能將串列訊號採取封包段落顯示,以直列方式顯示資料內容。
![]() |
| 圖3 同時進行USB1.1及I2C串列協定訊號分析 |
![]() |
| 圖4 USB串列協定模組 |
前面提到封包是組成USB傳輸的最小單位。一個交易(Transaction) 通常由三個封包組成,但依傳輸型態而定,一個Transaction可能包含一個、兩個、三個封包(圖5)。
![]() |
| 圖5 USB1.1封包架構 |
| 每個Transaction以記號(Token)封包為起始。Token封包定義裝置、端點(Endpoint)數量,傳輸的方向。其中訊框起始(SOF)Token包含目前的訊框數,而且會廣播給所有的全速(Full-speed)裝置知道,SOF也是唯一一個不指定目標的Token,另外,Token封包長度固定為四個位元組(Byte)。 |
| 資料(Data)封包包含處理此動作的資料。一個Transaction中,Data封包最大的資料量為一千零二十三個位元組,實際允許的最大資料量取決於傳輸狀態。 |
| 除了即時型傳輸(Isochronous)外,所有的傳輸都保證資料的傳遞正確,如交握(Handshake)封包回應資料是否正確的被收到,若執行處理動作中發生錯誤,處理動作將重新執行。 |
圖6是同步序列(Synchronization Sequence)的波形,其由八個位元組成,數值是二進位的00000001, 依照NRZI編碼原理,資料0代表訊號要轉換,所以前七個0之中的每個位元都會在相對應的位元時間中轉換,作用就好像提供一組可用來同步的時脈(Clock)。Packet ID定義封包的目的與內容。封包主要有三種型態,即Token、Data與Handshake,其中Token封包定義傳輸的型態;Data封包接在Token之後,將傳輸的資料輸出或輸入USB裝置中;Handshake則是提供傳輸成功或失敗的訊息。
![]() |
| 圖6 同步序列波形 |
Packet ID的訊號格式如圖7,總共有八個位元,前四個位元代表ID(Type Field),後四個位元是檢查欄位(Check Field),其值固定是ID的反向,如ID為二進位的1001,則檢查欄位就是0110,合起來就是10010110。
![]() |
| 圖7 Packet ID訊號格式 |
USB定義四種封包種類
所有處理動作都是由一個Token封包開始,USB定義四種Token封包,包括SOF,IN,OUT,SETUP。
USB裝置用SOF封包判斷訊框的起點。當每個訊框開始的時候,SOF封包被送至每個全速的裝置。即時型傳輸裝置可經由SOF封包達到同步傳輸的作用,低速裝置不支援即時型傳輸,所以SOF封包不會送至低速裝置,如圖8所示,SOF封包包含一個長度為11位元的訊框號碼,接收器使用5位元的CRC位元確認訊框號碼。SOF封包不含任何資料,其傳輸也不保證一定成功,當USB裝置對此SOF封包PID檢查碼錯誤時,裝置將忽略此封包;當CRC檢查錯誤時,會忽略此訊框號碼,須注意PID與訊框號碼都是LSB在前,MSB在後。圖9是一個SOF封包的實際波形,PID前四個位元0101就是SOF封包。PID之後的是11位元的訊框號碼,本例的訊框號碼是10101100010,換算為十進位就是1378,也就是第一千三百七十八個訊框。
|
所謂IN與OUT是指對於個人電腦而言,IN封包是個人電腦須由裝置讀進資料時使用;OUT則是個人電腦須送出資料給裝置時使用,IN封包可以使用在中斷型傳輸、巨量型傳輸、控制型傳輸的資料時期、即時型傳輸等傳輸。圖10是IN封包格式示意圖與實際量測圖,如圖所示,除了基本的Type欄位與Check欄位之外,IN封包包含7位元的裝置位址(Device Address)與4位元的端點號碼(Endpoint Number),執行IN封包動作時,首先個人電腦送出一個IN封包,接著裝置回傳一個資料封包,最後個人電腦送出一個交握封包給裝置,表示已收到資料,但在即時型傳輸中,IN處理動作不使用交握封包,而IN傳輸所能傳輸的資料量取決於傳輸型態。
圖11是一個實際的IN封包波形。PID的前4位元為1001,就是IN封包的ID,其次是7位元的位址(Address),這個例子的Address是1,再來是4位元的Endpoint,這個例子的Endpoint是0,最後是5位元的CRC。
|
當資料將被送出給某個裝置時,系統會進行一個OUT傳輸,有三種傳輸型態用到OUT傳輸,即巨量型傳輸、控制型傳輸的資料時期、即時型傳輸。OUT封包除了PID之外,其餘資料格式都與IN封包相同,一樣有7位元的Address,4位元的Endpoint(圖12)。
|
SETUP封包只有在控制型傳輸的設定階段使用,SETUP處理動作啟動一個控制型傳輸,並且定義為設定階段,SETUP處理動作在形式上類似一個OUT動作,即為SETUP封包後跟著一個Data0封包與一個回覆封包。SETUP封包的目的是傳送一個要求給裝置執行,該封包除了PID外,其餘資料格式都與IN/OUT封包相同(圖13)。
|
Data封包跟在IN、OUT、SETUP三種封包之後,IN封包之後的Data封包是將資料傳入個人電腦;OUT與SETUP之後的封包是將資料傳出給裝置。傳輸資料時,Data0封包與Data1封包是交互的使用,若此次傳輸資料是用Data0封包,則下次傳輸資料就是使用Data1封包,反之亦然,這是為用來當作同步機制使用,一個很大量的資料,會被切成多個小封包來傳輸,此時Data0與Data1封包交互的使用就可以當作一個同步的機制。圖14是Data0與Data1的封包格式,PID為1100就是Data0封包,PID為1011就是Data1封包。
|
交握封包用來回報處理動作的完成狀況。交握封包有三種,包括ACK封包以確認資料正確無誤的被接收;NAK封包則告知主機現在目標裝置暫時無法接收或傳回資料;STALL封包為無法完成傳輸,且需軟體介入以便使裝置能從STALL狀態復原。圖15是三種交握封包的格式圖,交握封包沒有資料,也沒有CRC,只有SYNC與PID,ACK的PID是0010,NAK的PID是1010,STALL的PID是1110。
|
| 前導封包(Preamble Packet)用在低速傳輸時。在傳送一個低速封包前,一個前導封包必須被送出,主機保證前導封包之後的封包是低速傳送,前導封包由一個SYNC與一個PID組成,PID是1100,有一點須注意的是,前導封包不可以EOP結尾。 |
串列協定封包觸發功能強 測試方式即可更精準
觸發功能越強大越能精準的觸發至正確的數值上,而串列協定封包觸發功能便是如此,僅須在設定視窗中設定串列協定中的狀態或是指定數值,透過軟體強大的功能便可正確的觸發至指定位置上,如設定觸發條件為USB1.1,訊號指定資料為0X1B時觸發,圖16為完成觸發時顯示的頁面。
![]() |
| 圖16 完成觸發 |
串列協定常常被應用在嵌入式系統的設計中,但是若僅使用示波器分析這些訊號非常花時間,而個人電腦架構邏輯分析儀可提供工程師們更強大的觸發功能、多樣的串列協定解碼模組及便利的資料搜尋,讓工程師在開發產品時更能夠得心應手。
(本文作者任職於孕龍科技)















